/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tk.eigh.ksvg.component.painting;

import java.util.HashMap;
import java.util.Map;
import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFProperty;
import tk.eigh.ksvg.SVG;
import tk.eigh.ksvg.types.SVGLength;
import tk.eigh.ksvg.types.SVGNumber;

/**
 *
 * @author nt
 */
public interface _StrokeProperties {

    final Map<String, String> INTERFACE_ATTRIBUTES = new HashMap<String, String>(0x8) {

        {
            put(SVG.STROKE_PROP, SVG.STROKE_PROP);
            put(SVG.STROKE_DASHARRAY_PROP, SVG.STROKE_DASHARRAY_ATTR);
            put(SVG.STROKE_DASHOFFSET_PROP, SVG.STROKE_DASHOFFSET_ATTR);
            put(SVG.STROKE_LINECAP_PROP, SVG.STROKE_LINECAP_ATTR);
            put(SVG.STROKE_LINEJOIN_PROP, SVG.STROKE_LINEJOIN_ATTR);
            put(SVG.STORKE_MITTERLIMIT_PROP, SVG.STORKE_MITTERLIMIT_ATTR);
            put(SVG.STROKE_OPACITY_PROP, SVG.STROKE_OPACITY_ATTR);
            put(SVG.STROKE_WIDTH_PROP, SVG.STROKE_WIDTH_ATTR);
        }
    };

    /**
     * Value: &lt;paint&gt; (See
     * http://www.w3.org/TR/SVG/painting.html#SpecifyingPaint)
     *<br/>
     * The ‘stroke’ property paints along the outline of the given graphical
     * element.
     *<br/>
     * Animatable: yes
     */
    @JSFProperty
    String getStroke();

    /**
     * Value: &lt;percentage&gt; | &lt;length&gt; | inherit
     *<br/>
     * This property specifies the width of the stroke on the current object.
     *<br/>
     * Animatable: yes
     */
    @JSFProperty
    String getStrokeWidth();

    /**
     * Value: butt | round | square | inherit
     *<br/>
     * ‘stroke-linecap’ specifies the shape to be used at the end of open
     * subpaths when they are stroked. Value: butt | round | square | inherit
     *<br/>
     * Animatable: yes
     */
    @JSFProperty
    String getStrokeLinecap();

    /**
     * Value: miter | round | bevel | inherit
     *<br/>
     * ‘stroke-linejoin’ specifies the shape to be used at the corners of paths
     * or basic shapes when they are stroked. Value: miter | round | bevel |
     * inherit
     *<br/>
     * Animatable: yes
     */
    @JSFProperty
    String getStrokeLinejoin();

    /**
     * Value: &lt;miterlimit&gt; | inherit
     *<br/>
     * When two line segments meet at a sharp angle and miter joins have been
     * specified for ‘stroke-linejoin’, it is possible for the miter to extend
     * far beyond the thickness of the line stroking the path. The
     * ‘stroke-miterlimit’ imposes a limit on the ratio of the miter length to
     * the ‘stroke-width’. When the limit is exceeded, the join is converted
     * from a miter to a bevel.
     *<br/>
     * Animatable: yes
     */
    @JSFProperty
    SVGNumber getStrokeMitterlimit();

    /**
     * Value: none | &lt;dasharray&gt; | inherit
     *<br/>
     * ‘stroke-dasharray’ controls the pattern of dashes and gaps used to stroke
     * paths. &lt;dasharray&gt; contains a list of comma and/or white space separated
     * &lt;length&gt;s and &lt;percentage&gt;s that specify the lengths of alternating
     * dashes and gaps. If an odd number of values is provided, then the list of
     * values is repeated to yield an even number of values. Thus,
     * stroke-dasharray: 5,3,2 is equivalent to stroke-dasharray: 5,3,2,5,3,2.
     *<br/>
     * Animatable: yes (non-additive)
     */
    @JSFProperty
    String getStrokeDasharray();

    /**
     * Value: &lt;percentage&gt; | &lt;length&gt; | inherit
     *<br/>
     * ‘stroke-dashoffset’ specifies the distance into the dash pattern to start
     * the dash.
     *<br/>
     * Animatable: yes
     */
    @JSFProperty
    SVGLength getStrokeDashoffset();

    /**
     * Value: &lt;opacity-value&gt; | inherit
     *<br/>
     * ‘stroke-opacity’ specifies the opacity of the painting operation used to
     * stroke the current object.
     *<br/>
     * Animatable: yes
     */
    @JSFProperty
    SVGNumber getStrokeOpacity();
}
